我們知道專案中 index.php 會被視為首頁
只要輸入 http://127.0.0.1/game 就會開啟 index.php
其實等於 http://127.0.0.1/game/index.php
後面的 index.php 可以被省略,這是首頁的優待
那首頁的程式碼可能會是
<html>
<head>
<!-- 這裡是 HTML 語法的 header 頁首引用宣告區 -->
<!-- 這裡是 HTML 語法的 header 頁首引用宣告區 -->
<!-- 這裡是 HTML 語法的 header 頁首引用宣告區 -->
</head>
<body>
<!-- 這裡是 HTML 語法的 主要資料區 -->
<?php echo "放上首頁介紹的資料";?>
<!-- 這裏通常會放 footer 頁尾的資料 -->
<!-- 這裏通常會放 footer 頁尾的資料 -->
<!-- 這裏通常會放 footer 頁尾的資料 -->
</body>
</html>
如果我們想寫英雄列表頁
就要開一個 list.php
那網址就會是 http://127.0.0.1/game/list.php
這個 list.php 不能省略,省略就會優先導向首頁
程式碼可能會是
<html>
<head>
<!-- 這裡是 HTML 語法的 header 頁首引用宣告區 -->
<!-- 這裡是 HTML 語法的 header 頁首引用宣告區 -->
<!-- 這裡是 HTML 語法的 header 頁首引用宣告區 -->
</head>
<body>
<!-- 這裡是 HTML 語法的 主要資料區 -->
<?php echo "這裡有一張表格裡面有很多英雄的名字";?>
<!-- 這裏通常會放 footer 頁尾的資料 -->
<!-- 這裏通常會放 footer 頁尾的資料 -->
<!-- 這裏通常會放 footer 頁尾的資料 -->
</body>
</html>
如果我們想寫單一英雄介紹頁
就要開一個 hero.php
那網址就會是 http://127.0.0.1/game/hero.php
這個 hero.php 也不能省略
程式碼應該會是:
<html>
<head>
<!-- 這裡是 HTML 語法的 header 頁首引用宣告區 -->
<!-- 這裡是 HTML 語法的 header 頁首引用宣告區 -->
<!-- 這裡是 HTML 語法的 header 頁首引用宣告區 -->
</head>
<body>
<!-- 這裡是 HTML 語法的 主要資料區 -->
<?php echo "這裡一個表格有英雄的名字跟其他細節資料";?>
<!-- 這裏通常會放 footer 頁尾的資料 -->
<!-- 這裏通常會放 footer 頁尾的資料 -->
<!-- 這裏通常會放 footer 頁尾的資料 -->
</body>
</html>
再次,一樣的問題又出現了
發現 header 頁首跟 footer 頁尾幾乎每一頁都要重複使用
如果今天我們有 10 頁,要改的話就要改 10 次
『還不能漏掉任何一頁,不然就會出錯』
為了不挖坑給未來的自己跳,我們可以把共用的部分拆成共用的檔案
頁首拆成 header.php
<html>
<head>
<!-- 這裡是 HTML 語法的 header 頁首引用宣告區 -->
<!-- 這裡是 HTML 語法的 header 頁首引用宣告區 -->
<!-- 這裡是 HTML 語法的 header 頁首引用宣告區 -->
</head>
<body>
頁尾拆成 footer.php
<!-- 這裏通常會放 footer 頁尾的資料 -->
<!-- 這裏通常會放 footer 頁尾的資料 -->
<!-- 這裏通常會放 footer 頁尾的資料 -->
</body>
</html>
中間內容部分抓出來存成
main.php 首頁內容
<!-- 這裡是 HTML 語法的 主要資料區 -->
<?php echo "這裡有一張表格裡面有很多英雄的名字";?>
list.php 列表內容
<!-- 這裡是 HTML 語法的 主要資料區 -->
<?php echo "這裡有一張表格裡面有很多英雄的名字";?>
hero.php 單頁內容
<!-- 這裡是 HTML 語法的 主要資料區 -->
<?php echo "這裡一個表格有英雄的名字跟其他細節資料";?>
index.php 當成是統一的入口,先使用最簡單的 GET 參數來決定導向哪一頁
如果網址是 http://127.0.0.1/game/index.php?page=list 就會出現 list page
程式碼這樣寫
<?php
require('vendor/autoload.php'); // 載入 composer
if(isset($_GET['page']) AND !empty($_GET['page'])){
$page = $_GET['page'];
}else{
$page = "main";
}
include('header.php'); // 載入共用的頁首
switch($page){ // 依照 GET 參數載入共用的內容
case: "main";
include('main.php');
break;
case: "list";
include('list.php');
break;
case: "hero";
include('hero.php');
break;
}
include('footer.php'); // 載入共用的頁尾
這樣就是一個有 route 路由概念的超基礎框架
還記得是為了什麼改成這樣的嗎?
為了拆出共用的元件,避免未來要到處找重複的地方做修改
今天先講到這裡!明天我們來聊 Clean URL 如何做出更乾淨的網頁路徑
這樣好像沒辦法運行~
switch($page){ // 依照 GET 參數載入共用的內容
case: "main";
include('main.php');
break;
case: "list";
include('list.php');
break;
case: "hero";
include('hero.php');
break;
}
##這裡要改成這樣
include('header.php'); // 載入共用的頁首
switch($page){ // 依照 GET 參數載入共用的內容
case "main":
include('main.php');
break;
case "list":
include('list.php');
break;
case "hero":
include('hero.php');
break;
}
include('footer.php'); // 載入共用的頁尾
水哦 你們越來越 li hi 了